Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 初始值（外部传入）
    value: {
      type: Number,
      value: 0
    },
    // 最小值限制（可选）
    min: {
      type: Number,
      value: 0
    },
    // 最大值限制（可选）
    max: {
      type: Number,
      value: Infinity
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     *  处理输入框输入
     */
    handleInput(event) {
      const inputValue = event.detail.value.replace(/[^\d]/g, '')
      // 不大于最大值
      if (inputValue > this.data.max) {
        wx.showToast({
          title: '库存不足',
          icon: "none"
        })
        this.setData({
          value: this.data.max
        })
        // 触发外部事件，传递新值
        this.triggerEvent('change', {
          value: Number(this.data.max)
        });
        return
      };
      this.setData({
        value: event.detail.value.replace(/[^\d]/g, '')
      })
      // 触发外部事件，传递新值
      this.triggerEvent('change', {
        value: Number(inputValue)
      });
    },


    // 减号点击事件
    handleMinus() {
      let newValue = this.data.value - 1;
      // 不小于最小值
      if (newValue < this.data.min) return;
      this.setData({
        value: newValue
      });
      // 触发外部事件，传递新值
      this.triggerEvent('change', {
        value: Number(newValue)
      });
    },

    // 加号点击事件
    handlePlus() {
      let newValue = this.data.value + 1;
      // 不大于最大值
      if (newValue > this.data.max) {
        wx.showToast({
          title: '库存不足',
          icon: "none"
        })
        return
      };
      this.setData({
        value: newValue
      });
      // 触发外部事件，传递新值
      this.triggerEvent('change', {
        value: Number(newValue)
      });
    }
  }
})